1. Technical Field
Example embodiments of the present invention relate in general to a tool for effectively supporting open computing language (OpenCL) application software development and more specifically to a tool composition for supporting OpenCL application software development for an embedded system and a supporting method thereof.
2. Related Art
In recent years, with popularization of multi-core or many-core processors for improving computing performance, there has been a growing interest in software technology development for utilizing the computer system.
Open computing language (OpenCL) is one of computing standard frameworks for providing parallel computing based on multi-core or many-core processors. Here, OpenCL may be constituted of an OpenCL language, an application programming interface (API), a library, and a runtime system.
The OpenCL language that is a new parallel programming language provided by OpenCL standard makes it easy to create high-performance computing software having high efficiency and portability. That is, the OpenCL language is a latest programming language that supports heterogeneous multi-core-based parallel computing.
Meanwhile, OpenCL application software may include a host program written in C and C++ and a kernel program written in C99-based OpenCL language.
The host program performs the OpenCL application software, and performs control and data transmission between the host program and the kernel program using an OpenCL API. The kernel program is a program that performs actual computation.
Here, a typical tool for supporting OpenCL application software development requires an OpenCL software development kit (SDK) that includes OpenCL library and toolkit for developing the OpenCL application software. Specifically, core manufacturers may provide their own OpenCL SDKs developed for supporting their specific cores to developers, the developers may select and install an OpenCL SDK suitable for their development systems, and therefore an OpenCL application software development environment may be prepared.
An existing tool for supporting the OpenCL application software development is not just for a dedicated tool for the OpenCL application software development.
Accordingly, the developer has to manually and directly change and set an OpenCL development environment so that a general OpenCL development environment can allow OpenCL application software development.
In addition, the existing tool for supporting the OpenCL application software development supports only a local desktop environment, and therefore embedded system developers requiring a remote embedded development environment cannot use a general tool for supporting OpenCL application software development.
Meanwhile, with respect to a build method of a kernel source code of the kernel program of the OpenCL application software, an OpenCL development environment for an embedded system and an OpenCL development environment for a desktop should be considered differently.
Specifically, a binary code of the kernel source code may be built using an online compiler or an offline compiler.
The offline compiler is a dedicated offline compiler for an OpenCL language. Specifically, offline compilation using the offline compiler is a method of generating a binary code corresponding to a kernel source code by compiling the kernel source code before executing a host program, in other words, before executing a binary code corresponding to a source code of the host program.
Online compilation using the online compiler is a method of generating a binary code of a kernel source code written in an OpenCL language at the time of calling the binary code of the host program.
In this instance, in case of an environment of supporting desktop OpenCL application software development, offline compilers for compiling a binary code of a host program a kernel source code of a kernel program are all provided in a desktop, and therefore the environment is not significantly affected by a type of the compiler.
However, in case of an environment for supporting OpenCL application software development for an embedded system, a host system that develops OpenCL application software using a device for supporting OpenCL application software development and a target system that actually performs the OpenCL application software are separated from each other. Accordingly, a binary code of a kernel program to be transmitted to the target system may differ depending on a type of a compiler and the target system to which the binary code is to be applied.
Specifically, in case of the online compilation, the binary code of the host program and the source code of the kernel program should be transmitted to the target system.
On the other hand, in case of the offline compilation, the binary codes of the host program and the kernel program should be transmitted to the target system.
However, an existing device for supporting OpenCL application software development does not consider these points, and therefore cannot support a convenient and rapid OpenCL application software development environment. As a result, it is difficult for developers to perform OpenCL application development for an embedded system in a general OpenCL development environment.